<?php

require_once Kohana::find_file('vendor', 'phptal/PHPTAL');

/**
 * LawsのControllerクラスベース
 *
 * Laws共通のコントローラークラス
 * URLからModelクラスを判別し、実行する
 *
 * @author Lty-Chiba
 * @since 2010/11/17
 * @version 1.0
 */
class LawsBase_Controller extends Controller_Core {

	/** PHPTalのTemplate格納変数 */
	private $template;

	/**
	 * コンストラクタ
	 */
	public function __construct() {
		parent::__construct();
	}

	/**
	 * Model振り分け処理(superクラスからOverLoad)
	 *
	 * URLからModel名を取得し、インスタンス生成し実行する
	 *
	 * 例) Model名はHogeになる
	 * http://～～.com/laws/hoge
	 *
	 * @see Controller_Core::__call()
	 */
	public function __call($forward, $params) {

		// URLがindex.php or Modelが指定されていない
		if($forward == 'index') {
			// TODO Lty-Chiba
			// 強制的にLogin画面へ遷移させる
			$forward = 'login_init';
		}

		$array = explode('_', $forward);

		// Model名を取得
		$className = '';
		foreach ($array as $val) {
			$className .= strtoupper(substr($val, 0, 1)) . substr($val, 1, strlen($val));
		}
		$className .= '_Model';

		// Modelがない場合404エラー
		if(!class_exists($className)) {
			// Not Found Exception出力
			Event::run('system.404');

		} else {
			// インスタンス生成
			$this->model = new $className;
			// executeメソッド呼び出し
			$this->model->execute(new PHPTAL());
		}
	}
}